package pe.edu.upc.jtigers.svpn.service.implement;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.upc.jtigers.svpn.aplication.bean.ControlBean;
import pe.edu.upc.jtigers.svpn.aplication.excepcion.DAOExcepcion;
import pe.edu.upc.jtigers.svpn.data.Constans.DetalleParametroConstans;
import pe.edu.upc.jtigers.svpn.domain.data.ControlDao;
import pe.edu.upc.jtigers.svpn.domain.data.PlanNegocioDao;
import pe.edu.upc.jtigers.svpn.domain.model.Control;
import pe.edu.upc.jtigers.svpn.domain.model.DetalleParametro;
import pe.edu.upc.jtigers.svpn.domain.model.PlanNegocio;
import pe.edu.upc.jtigers.svpn.domain.service.ControlService;

@Service
public class ControlServiceImpl implements ControlService {

	@Autowired
	private ControlDao controlDao;


	@Autowired
	private PlanNegocioDao planNegocioDao;
	
	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public Control registrarControl(ControlBean controlBean) {
		Control control = null;
		try {			
			int idDetalleParametro = controlBean.isAprobado() ? DetalleParametroConstans.ESTADO_PLAN_APROVADO
					: DetalleParametroConstans.ESTADO_PLAN_RECHAZADO;
			control = new Control();
			control.getAdministrador().setIdUsuario(controlBean.getIdUsuario());
			control.getPlanNegocio().setIdPlanNegocio(controlBean.getIdPlanNegocio());
			control.getEstadoPlan().setIdDetalleParametro(idDetalleParametro);
			control.setComentario(controlBean.getComentario());
			control = controlDao.registrarControl(control);
			
			PlanNegocio planNegocio = planNegocioDao.obtenerPlanNegocio(controlBean.getIdPlanNegocio());
			planNegocio.setEstadoPlan(new DetalleParametro());
			planNegocio.getEstadoPlan().setIdDetalleParametro(idDetalleParametro);
			planNegocioDao.registrarPlanNegocio(planNegocio);
			
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return control;
	}

}
